﻿/// <reference path="../../yui-3.14-min.js" />
YUI.add('pregunta-list-view', function (Y) {

    Y.PreguntasView = Y.Base.create('PreguntasView', Y.View, [], {
        initializer: function () {

            var that = this,
                request = Y.io('/scripts/views/preguntas/templates/preguntas.html', {
                    on: {
                        complete: function (id, response) {
                            //creacion de los modelos
                            var list = that.get('modelList');
                            that.get('container').setHTML(response.responseText);

                            //DataTable
                            var table = new Y.DataTable({
                                columns: [
                                    { label: 'CodigoTipo', key: 'CodigoTipo' },
                                    { label: 'Enunciado', key: 'Enunciado', sortable: true, resizable: true },
                                    { label: 'CodigoCategoria', key: 'CodigoCategoria', sortable: true },
                                    { label: 'CodigoArea', key: 'CodigoArea' },
                                    { label: 'Estado', key: 'Estado', sortable: true },
                                    {
                                        label: ' ', key: 'IdPregunta', type: 'link', cellTemplate:
                                            '<td class="{className}">' +
                                                '<a class="edit" href="{content}">Editar</a>' +
                                            '</td>'
                                    },
                                    {
                                        label: ' ', key: 'IdPregunta', type: 'link', cellTemplate:
                                              '<td class="{className}">' +
                                                  '<a class="remove" href="{content}">Eliminar</a>' +
                                              '</td>'
                                    }
                                ],
                                data: list,
                                recordType: Y.Pregunta,
                                location: 'footer',
                                pageSizes: [5, 10, 'all'],
                                rowsPerPage: 5,
                                pageLinks: 5,
                                editable: false,
                                width: '100%'
                            });
                            table.render('#preguntaTabla');
                        }
                    }
                });
        },
        events: {
            '.edit': { click: 'edit' },
            '#agregar': { click: 'newPregunta' },
            '.remove': { click: 'deletePregunta' },
            '#masDatos': { click: 'listarPreguntas' },
            '#datosAnteriores': { click: 'datosAnteriores' },
            '#buscar': { click: 'buscarPregunta' },
            '#clear': { click: 'refrescar' }
        },
        render: function () {
            return this;
        },
        //metodo para la edicion de un catalogo seleccionando el link
        edit: function (e) {
            e.preventDefault();
            debugger
            Y.editarView(this, e.target.getAttribute('href'), false);

        },
        newPregunta: function (e) {
            e.preventDefault();
            Y.editarView(this, 0, true);

        },

        deletePregunta: function (e) {
            e.preventDefault();
            debugger
            var data = e.target.getAttribute('href');
            var list = this.get('modelList');
            var pregunta = list.filter(function (preg) {
                return preg.getAttrs(['IdPregunta']).IdPregunta == data;
            });

            // Re-render this view when a model is added to or removed from the model list.
            list.after(['add', 'remove', 'reset'], this.render, this);

            if (confirm('¿Realmente desea eliminar la pregunta ?')) {
                debugger

                var clone = Y.clone(pregunta[0]);

                pregunta[0].lists = [];
                list.remove(clone);


                var that = this, n = pregunta[0].destroy({ urlName: 'deleteOption', remove: true }, function (err, d) {
                    debugger
                    if (err != null) {
                        debugger
                        alert('Problemas al eliminar la pregunta');
                    }
                }), f = this.fire('navigateToView', {
                    viewName: 'preguntas',
                    modelList: list
                });
            }
        },

        listarPreguntas: function (e) {
            e.preventDefault();
            var that = this;
            var pIndex = parseInt(localStorage["Pagina"]) + 1;
            var pSize = parseInt(localStorage["Tamanio"]);
            localStorage["Pagina"] = pIndex;
            Y.one('#datosBusquedapreg').set('value', localStorage["seleccioncriterio"]);
            Y.one('#datosBusqueda').set('value', localStorage["criterio"]);
            var listaPreguntas = new Y.Preguntas();
            listaPreguntas.load({ urlName: 'listPaging', pageIndex: pIndex, pageSize: pSize }, function () {

                if (listaPreguntas.size() == 0) {
                    alert("No Existen más datos")
                    localStorage["Pagina"] = parseInt(localStorage["Pagina"]) - 1;
                    return;
                }
                that.fire('navigateToView', {
                    viewName: 'preguntas',
                    modelList: listaPreguntas
                });
            });

        },

        datosAnteriores: function (e) {
            e.preventDefault();
            var that = this;
            var pIndex = parseInt(localStorage["Pagina"]) - 1;
            var pSize = parseInt(localStorage["Tamanio"]);
            if (pIndex < 0)
                return;
            localStorage["Pagina"] = pIndex;
            var listaPreguntas = new Y.Catalogos();
            listaPreguntas.load({ urlName: 'listPaging', pageIndex: pIndex, pageSize: pSize }, function () {
                that.fire('navigateToView', {
                    viewName: 'preguntas',
                    modelList: listaPreguntas
                });
            });
        },

        buscarPregunta: function (e) {
            e.preventDefault();
            debugger
            var listaPreguntas = this.get('modelList');
            var seleccioncriterio = Y.one('#datosBusquedapreg').get('value');
            var criterio = Y.one('#datosBusqueda').get('value').trimLeft();
            var datosEncontrados = listaPreguntas.filter(function (preg) {
                return preg.get(seleccioncriterio).toLowerCase().indexOf(criterio.toLowerCase()) != -1;
            });
            localStorage["seleccioncriterio"] = seleccioncriterio;
            localStorage["criterio"] = criterio;
            this.fire('navigateToView', {
                viewName: 'preguntas',
                modelList: datosEncontrados
            });
        },
        refrescar: function (e) {
            e.preventDefault();
            debugger
            var that = this;
            var listaPreguntas = new Y.Preguntas();
            localStorage["seleccioncriterio"] = "";
            localStorage["criterio"] = "";
            listaPreguntas.load(function () {
                that.fire('navigateToView', {
                    viewName: 'preguntas',
                    modelList: listaPreguntas
                });
            });
        }
    })

}, '0.0.0.1', {
    requires: ['view', 'pregunta-model-list', 'pregunta-model', 'io', 'handlebars', 'aui-modal', 'aui-form-validator',
        'editar-pregunta-view', 'aui-datatable', 'datatable-paginator', 'datatable-base', 'cacheExcellent']
})